#ifndef _NE_FOG_H_
#define _NE_FOG_H_

#include <common/Object.h>
#include <mathematics/Color.h>
#include <graphics/RenderSystemDefine.h>

namespace ne
{
    class NEAPI Fog : public Object
    {
        public:
            explicit Fog(const std::string &name);

            Fog(const Fog &f);

            Fog& operator = (const Fog &f);

            void setColor(const Color &c);

            Color getColor() const;

            void setStart(const real f);

            real getStart() const;

            void setEnd(const real f);

            real getEnd() const;

            void setDensity(const real f);

            real getDensity() const;

            void setFogMode(const FogMode fm);

            FogMode getFogMode() const;

            void setFogCoordMode(const FogCoordMode fcm);

            FogCoordMode getFogCoordMode() const;

            virtual ~Fog();

        private:
            Fog();

        private:
            Color mFogColor;
            real mFogStart;
            real mFogEnd;
            real mFogDensity;
            FogMode mFogMode;
            FogCoordMode mFogCoordMode;
    };
}
#endif
